iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

2.透過程序來添加 Fragment

官方文件表示,首先需要在 Activity 的佈局(layout)增加FragmentContainerView標籤來提供一個 Fragment 容器。

<!-- res/layout/example_activity.xml -->
<androidx.fragment.app.FragmentContainerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

與 1.透過佈局 XML 來添加 Fragment 方式的差異在於,這邊不會使用android:name屬性(attribute)。因此,不會有指定 Fragment 的自動實例化。取而代之的是,使用FragmentTransaction來實例化 Fragment,並將 Fragment 加入 Activity 佈局。

當 Activity 運作中(running),你可以進行針對 Fragment 的添加、移除及替換操作。在FragmentActivity,你可以獲取FragmentManager實例。FragmentManager被用來建立一個FragmentTransaction。之後,你可以在 Activity 的onCreate()方法,使用FragmentTransaction.add()傳遞佈局容器的ViewGroup ID 及想添加的 Fragment class並提交(commit)此任務(transaction),來實例化 Fragment。

官方範例如下:

class ExampleActivity : AppCompatActivity(R.layout.example_activity) {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (savedInstanceState == null) {
            supportFragmentManager.commit {
                setReorderingAllowed(true)
                add<ExampleFragment>(R.id.fragment_container_view)
            }
        }
    }
}

參考資料


上一篇
[Day 04] Fragment 的實作 - 1 (透過佈局 XML 來添加)
下一篇
[Day 06] Fragment 的實作 - 2 (透過程序來添加) / 提供初始化資料
系列文
[Android] 在 activity 與 fragment 身上的 lifecycle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言